Bienvenid@s a otra reunión de Pyladies!!

En esta sesión aprenderemos a crear nuestras propias funciones en python.Pero primero que son funciones?

Una función en python es un bloque de código organizado y reusable que sirve para realizar una tarea. Recuerdas las funciones que hemos usado en python, por ejemplo, cuando quisimos saber cuántos elementos hay en una lista usamos la función len. En python ya hay una gran colección de funciones que puedes utilizar (así no tenemos que re inventar la rueda cada vez que necesitemos algo) y aquí hay una lista de funciones que ya vienen incluídas en python.

Usando funciones en python

Como se los he dicho en varias ocasiones todas las funciones en python tienen la misma estructura que es como se ilustra a continuación:

nombre + paréntesis + argumentos

En el caso de len, la estructura sería la siguiente:

len(lista)

len toma como argumento la lista o arreglo del cual quieras saber su longitud. Una vez que la función sea ejecutada, nos va a devolver un objeto (que evidentemente será lo que le hemos pedido).


In [1]:
animales = ['perro', 'gato', 'perico']

In [2]:
len(animales)


Out[2]:
3

In [3]:
animales[1]


Out[3]:
'gato'

In [ ]:
x = 4

In [5]:
type(int('43'))


Out[5]:
int

In [ ]:

Ejercicio 1.

Cada un@ va a escoger una función de las que ya están incluídas en python y la va a explicar a sus compañer@s

Creando tus propias funciones en python

Ya que estás más familiarizada con las funciones pre hechas en python te podrás dar cuenta de que no siempre van a tener una que necesites, entonces, ¿cómo puedo hacer mis propias funciones?

En python la forma de hacerlo es la siguiente:

Primero tienes que hacerle claro a python que el bloque de código (o pequeño programa) que vas a escribir forma va a ser una función para esto se escribe def que es la abreviatura para definir.

Después tienes que inventar un nombre para tu función. En teoría puedes llamarlo como quieras, sin embargo, es de buena práctica en python llamar a tus funciones de forma tal que cuando las leas después de meses o años puedas claramente recordar que es lo que hacen.

Después de escribir def y el nombre de la función viene algo crucial para crear funciones, basándote en la estructura de las que ya vienen incluídas en python, qué crees que sea...

... Exactamente!! los argumentos!!

Esta parte es crucial porque de aquí vas a sacar la información necesaria para poder dar un resultado. Veremos esto más adelante.

Después viene el bloque de código que deseas ejecutar y esto puede constar de operaciones complejas y transformación de los datos.

Finalmente, para que quede claro para python lo que te debe devolver al final de la función necesitas escribir un return seguido de lo que será el resultado de la función.

La estructura para definir funciones queda de la siguiente manera:

def nombre_función(argumento 1, argumento 2, ... , argumento n):

operación 1

operación 2

resultado = operación 1 + operación 2

return resultado

Hagamos una pequeña función como ejemplo.


In [6]:
def cuadrado(numero):
    '''Función que da como resultado el cuadrado de un número
    necesitas un número como argumento'''
    resultado = numero**2
    return resultado

In [7]:
# Probemos la función

cuadrado(8)


Out[7]:
64

In [8]:
cuadrado(8.0)


Out[8]:
64.0

In [9]:
cuadrado(-8)


Out[9]:
64

Pausa para dudas

3 ..

2..

1

Muy bien! ahora te toca a tí :)

Ejercicio 2

Crea una función que dibuje una barra de carga con un porcentaje. Digamos que queremos que se dibuje el 35% entonces el resultado de correr la función sería:

[#######-------------] 35%


In [ ]:
def barras(porcentaje):
    gatos = (porcentaje*20)//100
    guiones = 20 - gatos
    print('['+'#'* gatos + '-' * guiones + ']'+str(porcentaje)+'%')

In [ ]:
barras(167)

In [1]:
gatos = (35*20)/100

In [ ]:


In [ ]:

Ahora prueba tu función con estos valores de porcentage:

* 12.5%
* 167 %
* -20 *

Ejercicio 3

Escribe una función que te diga cuantas consonantes hay en una palabra. Ejemplo: La palabra "carroza" tiene 4 consonantes

Argumentos predeterminados

Hay ocasiones en las cuales los argumentos para una función que vamos a crear los vamos a ocuparemos cotidianamente o simplemente tienen más sentido y para no tener que escribirlos cada vez que llamamos a la función lo que podemos hacer es definirlos desde el momento en el que estamos creando una función

Vamos a asumir que yo quiero hacer una función que eleve a la potencia n un número x. Digamos que de acuerdo a mi experiencia, la mayoría de las personas quiere saber el cuadrado de 4. Lo que hago entonces es una función que tenga como argumentos predeterminados el 4 y el 2... Veamos el ejemplo


In [10]:
def exponente(numero=4, exponente=2):
    '''Toma un número y lo eleva a la potencia de otro'''
    resultado = numero**exponente
    return resultado

Ahora veamos que pasa cuando llamamos a la función


In [11]:
exponente()


Out[11]:
16

Esto no significa que la función que acabo de escribir sea definitiva y no pueda yo modificarla para sacar las potencias con otros números. Como veremos a continuación, la función puede tomar cualquier número. Sólo tenemos que hacerlo explícito esta vez...


In [12]:
exponente(4, 0.5)


Out[12]:
2.0

In [13]:
exponente(5, -1)


Out[13]:
0.2

In [14]:
exponente(0.5, 2)


Out[14]:
0.25

Ahora te toca a ti

Ejercicio 4

Modifica la función que escribiste en el ejercicio número dos para que la barra de porcentage por default la llene con el símbolo de "#" pero que si quieres, puedas cambiar los signos por "@" o cualquier otro símbolo permitido en python... Tal vez con ❤ si sientes que es apropiado por el mes del amor y la amistad! (Puedes encontrar más caracteres de unicode aquí)


In [ ]:


In [ ]:


In [ ]: